/** 
 *  工具函数
 */

import api from '../api/api'

// 获取当前城市定位
export const getCurrentCity = () => {
  // 1.判断 localStorage 中是否有定位城市 localStorage.getItem 获取指定key本地存储的值
  const localCity = JSON.parse(localStorage.getItem('hkzf_city'))
  if (!localCity) {
    // 2.如果没有，就把当前城市定位信息，存储到本地
    // 通过 IP 定位获取当前城市名称
    return new Promise((resoive, reject) => {
      const myCity = new window.BMapGL.LocalCity();
      myCity.get(async result => {
        try {
          const cityName = result.name;
          const res = await api.get('/area/info', { name: cityName })
          // 存储到本地存储中
          localStorage.setItem('hkzf_city', JSON.stringify(res.data.body))

          // 获取定位城市成功 返回该城市数据
          resoive(res.data.body) // 把城市信息暴露出去
        } catch (e) {
          // 获取定位城市失败
          reject(e) // 把失败信息暴露出去
        }
      });
    })
  }
  //  3.如果有，直接返回本地存储中的城市数据
  // 注意:因为上面为了处理异步操作，使用了Promise,因此该函数返回值的统一，此处，也应该使用 Promise
  // 因此处的Promise不会失败，所以，此处，只要返回一个成功的Promise即可
  return Promise.resolve(localCity)
}